// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently
#pragma once

// Compiler Error Messages that we want to disable:
#pragma warning ( disable : 4793 )		// Compiling functions as native code 
#pragma warning ( disable : 4996 )		// 'strncpy': This function or variable may be unsafe 

#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers

#include <windows.h>

//////////////////////////////////////////////////////////////////////
//******************************************************************** 
// Global Enums
//******************************************************************** 
//////////////////////////////////////////////////////////////////////

// Logging Detail Settings
typedef enum _LoggingDetail{LOGGING_NONE,LOGGING_LOW,LOGGING_MEDIUM,LOGGING_HIGH} LoggingDetail;

// Enable Logging and if so, which detail (default = none)
static LoggingDetail g_LoggingDetail = LOGGING_NONE;
static char g_LogPath[MAX_PATH + 1] = {0};
static const char g_LOG_FILE_NAME[] = "ButtonHook.log"; // Log File for now is just hardcoded

//////////////////////////////////////////////////////////////////////
//******************************************************************** 
// Global Functions
//******************************************************************** 
//////////////////////////////////////////////////////////////////////

// Logs to Ooganizer.log in temporary folder
// %USERPROFILE%\AppData\Local\Temp\Ooganizer.log
void log(LoggingDetail detail,  char * pFmt, ... );

// At Startup we clear the log
void clearLog();

// Logs Window Text to log file
void log(LoggingDetail detail, HWND hWnd, char* str);

// Set the global (for this dll instance) Logging Detail Setting
void SetLoggingDetail(LoggingDetail detail, char* logPath);

// Get Logging Detail for custom debug behavior
_LoggingDetail GetLoggingDetail();